package jbit.service;

import java.io.Serializable;
import java.util.List;

import jbit.entity.Employee;
import jbit.util.PageBean;

import jbit.entity.ClaimVoucher;
import jbit.entity.ClaimVoucherDetail;

public interface ClaimVoucherService {
	
		/**
		 * 保存报销单。
		 * @param CliamVoucher 报销单
		 * @return 保存成功，返回报销单对象，保存失败返回null。
		 * @throws Exception 抛出异常
		 */
	   public ClaimVoucher saveClaimVoucher(ClaimVoucher claimVoucher);
		/**
		 * 提交报销单。
		 * @param CliamVoucher 报销单
		 * @return 保存成功，返回报销单对象，保存失败返回null。
		 * @throws Exception 
		 * @throws Exception 抛出异常
		 */
	   public ClaimVoucher submitClaimVocher(ClaimVoucher claimVoucher) throws Exception;
		/**
		 * 保存报销单明细。
		 * @param ClaimVoucherDetail 报销单明细
		 * @return 保存成功，返回报销单明细对象，保存失败返回null。
		 * @throws Exception 抛出异常
		 */
	   public ClaimVoucher addClaimVocherDetail(ClaimVoucherDetail claimVoucherDetail) ;
		
		/**
		 * 删除报销单明细。
		 * @param ClaimVoucherDetail 报销单明细
		 * @throws Exception 抛出异常
		 */
	   public ClaimVoucher delClaimVoucherDetail(Serializable id);
	   /**
	    * 员工提交或保存报销单后执行的查询方法
	    * 当type为date时，表示要执行日期查询
	    * @param pageSize
	    * 每页记录数
	    * @param page
	    * 页数
	    * @param condition
	    * 什么条件的
	    * @param employee
	    * 谁的报销单
	    * @return
	    */
	   public PageBean queryForPage(int pageSize, int page,
	           ClaimVoucher condition, Employee employee);
	   
	   public PageBean queryByDate(int pageSize, int page,
	           ClaimVoucher condition, Employee employee);
	   // 部门经理查询已提交和审核后的报销单
	   public PageBean queryClaimVoucher(int pageSize, int page,
	           ClaimVoucher condition, Employee employee);
}
